Import("utils_查看详情.js")

function clickCloseButton_XG(closeButton) {
    if (!closeButton) {
        return
    }
    agentOrHidClick(closeButton, 0)
    agentClickRight(closeButton)

    var detects = opencv.findImagesEx('图色819156.cv');
    if (detects != null) {
        // printinfoOld(detects);
        agentOrHidClick(detects[0], 0)
        sleep.millisecond(10)
        agentClickRight(detects[0], 2)
    }

}


function isInMainPage_XG() {
    var allres = ocrAllRes()
    if (ocrTextMoreByRes(allres, '日常任务', '金币收益', '赚钱任务', '去提现', '限时任务', '新人看视频')) {
        log('在主页面了!')
        return true
    }

    return false
}

function isInGGView_XG() {
    log('判断是否在广告页面')
    var allres = ocrAllRes()

    if (ocrTextMoreCompleteByRes(allres, '广告', '广告1)', '广告|)')) {
        return true
    }

    if (ocrTextMoreCompleteByRes(allres, '反馈', '跳过', '关闭', '广告')) {
        return true
    }

    if (ocrTextMoreByRes(allres, '继续观看', '直播间', '点击进入', '下滑', '记入奖励', '奖励时长', '后可领', '看直播开宝箱')) {
        return true
    }

    var detects播音 = opencv.findImagesEx('图色681128.cv');
    if (detects播音 != null) {
        log('检测到播音图标')
        return true
    }

    log('不在广告页面!!!')
    return false
}

function watchGG_西瓜视频独享(uiObj, skipClick, maxTimes) {
    log('开始进行看广告')
    if (!uiObj) {
        log('无点击控件直接返回')
        return
    }
    if (maxTimes == undefined) {
        maxTimes = 15;
    }

    if (!skipClick) {
        agentOrHidClick(uiObj, 3)
    }

    log('判断是否在广告页面')
    var isInGG = false
    whilestep((a, b, canbreak) => {
        var allres = ocrAllRes()
        if (ocrTextMoreCompleteByRes(allres, '广告', '反馈', '跳过', '立即下载')
            || ocrTextMoreByRes(allres, '跳过', '反馈', '点击进入')) {
            log('在广告页面了')
            isInGG = true
            canbreak()
        }
    }, 10, 2)

    if (!isInGG) {
        log('不在广告页面再次执行点击操作')

        // 判断是否还在主页面
        if (isInMainPage_XG()) {
            log('还在主页面再次点击原来的')
            agentOrHidClick(uiObj, 3)
            var is任然存在 = ocrText('看视频再', '看广告再', '看视频最高', '看广告最高', '看广告领', '看视频领', '看视频翻')
            if (is任然存在 == null) {
                is任然存在 = ocrText('翻倍领取', '看广告翻', '倍领取')
            }
            if (is任然存在) {
                agentOrHidClickOffectY(is任然存在, 10, 2)
            }
        } else {
            log('再次判断是否在广告页')
            if (!isInGGView_XG()) {
                log('注意注意不在广告不在主页面')
                sleep.second(5)
            }
        }
    }


    // 是否是中断任务
    var allres = ocrAllRes()
    if (ocrTextMoreByRes(allres, '继续', '续观看') && ocrTextMoreByRes(allres, '换一个', '坚持退出')) {
        // 继续观看
        log('继续观看')
        agentOrHidClick(ocrText('继续', '续观看'))
    }

    // 判断广告类型
    // 获取广告时长
    var findtime = ocrWaitForMoreTextMillisecondInRegion(0, 0, 1, 0.16, 6, '秒', 's后', 's', '后')
    if (findtime) {
        var convertTime = getNumber(findtime.text())
        log('广告时长' + convertTime)
        if (convertTime > 60) {
            convertTime = 30
        }
        if (convertTime < 5) {
            convertTime = 30
        }

        var rgbs
        var is古籍广告 = false
        var isZbGG = false
        var is非标广告 = false
        if (convertTime > 0) {
            whilestep((stepTimes, alltimes, canBreak) => {
                rgbs = get界面采样点()
                var allres = ocrAllRes()

                if (ocrTextMoreByRes(allres, '直播间', '点击进入', '直播中', '进入直播')) {
                    isZbGG = true
                    // 直播间广告
                    log('直播间广告')
                    agentClickRightOffectRight(ocrTextMoreByRes(allres, '取消'), 10, 1, () => {
                        if (ocrWaitForMoreTextMillisecond('更多直播', '说点什么', '人气', '小时榜', 4)) {
                            agentOrHidback()
                            sleep.second(2)

                            // 返回后如果不在广告页面也不在主页面就再次返回
                            if (!isInGGView_XG() && !isInMainPage_XG()) {
                                agentOrHidback()
                                sleep.second(1)
                            }
                        }


                        // 如果不小心返回过了
                        allres = ocrAllRes()
                        if (ocrTextMoreByRes(allres, '继续', '续观看') && ocrTextMoreByRes(allres, '换一个', '坚持退出')) {
                            // 继续观看
                            log('继续观看')
                            agentOrHidClick(ocrText('继续', '续观看'))
                        }
                    })
                }
                // 判断是否是斗地主之类的
                if (ocrTextMoreByRes(allres, '斗地主', '当皇上', '种树', '快乐学习', '古籍', '芒果', '公益')
                ) {
                    is古籍广告 = true

                    addExcuteFuncTimes('xgsp_斗地主_times')
                    canBreak()
                }

                if (ocrTextMoreByRes(allres, '咨询', '海外', '全球购', '实名', '汽车', '短剧', '预约')
                    || ocrTextMoreByRes(allres, 'free', 'Free', 'Move', 'move', 'wis', 'iss', 'sse')
                    || ocrTextMoreByRes(allres, '跳转微信', '微信', '打开微', '小游戏')
                    || ocrTextMoreByRes(allres, '口腔', '整形')) {
                    is非标广告 = true

                    canBreak()
                }

                // 判断是否广告已经结束
                if (convertTime > 29 && alltimes > 20) {
                    if (ocrTextMoreByRes(allres, '已领取', '再看一', '关闭', '开心收下', '领取成功', '领取奖励')) {
                        canBreak()
                    }
                }

            }, convertTime, 5, (canBreak) => {
                if (check界面是否不再变化(rgbs)) {
                    if (ocrText('领取成功')) {
                        log('界面不再变化!!!')
                        canBreak()
                    }
                }
            })
        }

        if (is古籍广告) {
            // 如果前两次是斗地主, 强制退出
            // if (getExcuteFuncTimes('xgsp_斗地主_times') <= 2) {
            //     log('前两次是斗地主强制退出')
            //     agentOrHidback()
            //     sleep.second(1)
            //     agentOrHidClick(ocrWaitForMoreTextMillisecond('不使用', '坚持退出', '坚决退出', '退出', '放弃'))
            //     return
            // }
        } else {
            addExcuteFuncTimes('xgsp_斗地主_times', 0)
        }

        if (isZbGG) {
            if (isEnableSwitch('xgsp_ddz')) {
                log('斗地主模式直接退出')
                // agentOrHidback()
                // sleep.second(1)
                // agentOrHidClick(ocrWaitForMoreTextMillisecond('不使用', '坚持退出', '坚决退出', '退出', '放弃'))
                canBreak()
            }
            if (isIn直播界面_sample()) {
                log('还在直播界面, 退出')
                var detects关闭直播 = opencv.findImagesEx('图色199710.cv');
                if (detects关闭直播 != null) {
                    agentOrHidClick(detects关闭直播[0])
                }

                // 可能存在误关闭
                if (!ocrText('额外获得', '领取奖励', '再看一')) {
                    if (isIn直播界面_sample()) {
                        log('再次判断还在直播界面, 退出')
                        agentOrHidback()
                        sleep.second(2)

                        var detects关闭直播 = opencv.findImagesEx('图色199710.cv');
                        if (detects关闭直播 != null) {
                            agentOrHidClick(detects关闭直播[0])
                        }
                        agentOrHidClick(ocrText('不使用', '坚决退出', '退出'))
                    }
                } else {
                    log('可能存在误关闭直播界面')
                }
            }
        }
    }

    if (isEnableSwitch('xgsp_ddz') && !is古籍广告) {
        setExcuteFunc('xgsp_need_fk')
        log('启用古籍模式但非斗地主跳过')
        agentOrHidback()
        sleep.second(1)
        agentOrHidClick(ocrWaitForMoreTextMillisecond('不使用', '坚持退出', '坚决退出', '退出', '放弃'))
        return
    }


    // 等待广告结束或者等待视频的完播
    var wbmaxTimes = 15

    if (getRandomNum(0, 100) > 70) {
        var rgbs = get界面采样点()
        sleep.second(1)
        while (true) {
            if (check界面是否不再变化(rgbs) || ocrText('直播')) {
                log('完播界面不再变化!!!')
                break
            }

            wbmaxTimes = wbmaxTimes - 1
            if (wbmaxTimes < 0) {
                break
            }
            sleep.second(2)
            rgbs = get界面采样点()
        }
        // 进行完播
    }


    var closeButton = ocrWaitForText('领取成功', 8, 2)

    var allres = ocrAllRes()
    // 是否去查看详情
    var isGoDetail = getRandomNum(0, 100) > (isBetweenTime(6, 19) ? 70 : 90)
    if (!is古籍广告 && !is非标广告 && isGoDetail) {
        // 或者第一个是直播间
        log('如果首个直播间挂机')
        if ((isGoDetail
            || getExcuteFuncTimes('xgsp_not_detail') % 5 == 0
            || getExcuteFuncTimes('zb_XGSP_low') >= 1)
            || getExcuteFuncTimes('xg_打开宝箱_太低_times') >= 1
            || (isZbGG && !hasExcuteFunc('xg_first_zb'))
        ) {
            // 直播间广告和其他广告
            // 游戏广和海外购直播/团购直播
            if (isZbGG) {
                if (!ocrTextMoreByRes(allres, '海外', '全球', '税', '实名', '球购')) {
                    // 低金币次数3次以上会看直播, 每隔5个海外购进入看直播
                    if (getExcuteFuncTimes('zb_XGSP_low') >= 2
                        || !hasExcuteFunc('xg_first_zb')
                        || getExcuteFuncTimes('xg_打开宝箱_太低_times') >= 1
                    ) {
                        addExcuteFuncTimes('xg_打开宝箱_太低_times', 0)


                        agentOrHidClick(ocrTextMoreByRes(allres, '点击进入', '直播间', '去直播', '进入', '下单最高', '最高返'))
                        startThredTaskMaxTime超时结束(() => {
                            log('直播挂机')
                            go看直播挂机()
                        }, 15 * 60)

                        addExcuteFuncTimes('zb_XGSP_low', 0)
                    }
                }

                setExcuteFunc('xg_first_zb')

                if (isIn直播界面_sample()) {
                    // 关闭直播
                    log('关闭直播')
                    var detects关闭直播 = opencv.findImagesEx('图色199710.cv');
                    if (detects关闭直播 != null) {
                        agentOrHidClick(detects关闭直播[0])
                    }

                    agentOrHidClick(ocrWaitForText('领取成功', '已成功领取奖励', '关闭', '奖励已领取', '闭', '跳过'))
                    agentOrHidClick(ocrText('不使用', '坚决退出', '退出'))

                    if (isIn直播界面_sample()) {
                        log('还在直播界面??')
                        agentOrHidback()
                        sleep.second(2)

                        // 如果不小心直接到广告主界面
                        var allres = ocrAllRes()
                        if (ocrTextMoreByRes(allres, '继续', '续观看') && ocrTextMoreByRes(allres, '换一个', '坚持退出')) {
                            // 继续观看
                            log('继续观看')
                            agentOrHidClick(ocrText('继续', '续观看'))
                            closeButton = ocrWaitForText('领取成功', 20, 2)
                            // agentOrHidClick(closeButton)
                            clickCloseButton_XG(closeButton)
                        } else {
                            agentOrHidClick(ocrTextMoreByRes(allres, '退出', '坚持', '坚决', '不使用'))
                        }
                    }
                }
            } else {
                viewDetail()
            }
            addExcuteFuncTimes('xgsp_not_detail', 0)

        } else {
            addExcuteFuncTimes('xgsp_not_detail')
        }
    }


    // 关闭广告
    if (closeButton && ocrText('领取成功')) {
        log('点击关闭广告')
        // agentOrHidClick(closeButton)
        clickCloseButton_XG(closeButton)
    } else {

        if (isInMainPage_XG()) {
            return
        }

        if (isInGGView_XG()) {
            agentOrHidback()
            sleep.second(2)
            var allres = ocrAllRes()
            if (ocrTextMoreByRes(allres, '继续', '续观看') && ocrTextMoreByRes(allres, '换一个', '坚持退出')) {
                // 继续观看
                log('继续观看')
                agentOrHidClick(ocrText('继续', '续观看'))
                closeButton = ocrWaitForText('领取成功', 20, 2)
                clickCloseButton_XG(closeButton)
            } else {
                // 存在广告页的二次弹窗
                if (isInGGView_XG()) {
                    log('异常2')
                    agentOrHidback()
                    sleep.second(2)
                } else {
                    if (isInMainPage_XG()) {
                        return
                    }
                    agentOrHidback()
                    sleep.second(2)
                    closeButton = ocrWaitForText('领取成功', 10, 2)
                    clickCloseButton_XG(closeButton)
                }
            }

        } else {
            log('在详情页面?')
            // if (ocrText('立即下载', '开发者', '应用权限')) {
            //     agentOrHidback()
            //     sleep.second(2)
            // }
            agentOrHidback()
            // sleep.second(2)
            closeButton = ocrWaitForText('领取成功', 10, 2)
            if (closeButton == null) {
                if (isInMainPage_XG()) {
                    return
                }
                agentOrHidback()
                closeButton = ocrWaitForText('领取成功', 3, 2)
            }
            clickCloseButton_XG(closeButton)
        }
    }

    // 判断是任务中心还是再来一次
    var allres = ocrAllRes()

    // 如果是任务中心结束迭代
    if (ocrTextMoreByRes(allres, '日常任务', '金币收益', '赚钱任务', '去提现', '限时任务', '新人看视频')) {
        log('在主页面了2')
        return
    }

    if (maxTimes < 1) {
        log('达到看广告极限次数')
        agentOrHidClick(ocrTextMoreByRes(allres, '退出', '残忍离开', '先不看', '坚持', '放弃', '强制'))
        return
    }

    var moreFlagAgain = ocrTextMoreByRes(allres, '额外获得', '领取奖励', '再看一')
    if (moreFlagAgain) {

        // 判断金币是否达标
        var flag = ocrText('+', '金币')
        var jinstr = ocrGetAllStrInNearDect(flag, 150, 20)

        var jbNum = getMaxNumByStr(jinstr)
        if (jbNum == 0) {
            if (ocrText('3600', '5000')) {
                jbNum = 3600

                // 初始化开宝箱首广
                addExcuteFuncTimes('open_开宝箱_XGSP_low', 0)
            }
        }
        if (jbNum >= 4000) {
            addExcuteFuncTimes('open_开宝箱_XGSP_low', 0)
            setExcuteFuncInTime一段时间内不再执行('open_开宝箱_XGSP', 0)
        }
        log(`获取金币: ${jbNum}`)


        if ((jbNum > 220 && jbNum < 3000) || (jbNum > 3600 && jbNum < 4000)) {
            addExcuteFuncTimes('zb_XGSP_low')
        }

        if (jbNum > 220 && jbNum < 3000 && !ocrText('3600', '4000', '5000')) {
            log('金币不达标退出')
            addExcuteFuncTimes('open_开宝箱_XGSP_low')
            agentOrHidClick(ocrTextMoreByRes(allres, '坚持退', '持退出'))
            if (getExcuteFuncTimes('xgsp_斗地主_times') > 2) {
                setExcuteFunc('bx_古籍_xg_low')
            }
            return
        }

        if ((jbNum > 10 && jbNum < 3000)) {
            agentOrHidClick(ocrTextMoreByRes(allres, '坚持退', '持退出'))
            return
        }

        log('再看一次')
        // 如果是再来一次
        watchGG_西瓜视频独享(ocrTextMoreByRes(allres, '取奖励', '领取奖'), false, maxTimes - 1)
    }

    var detects播音 = opencv.findImagesEx('图色681128.cv');
    if (detects播音 != null) {
        var falg = ocrText('领取成功')
        if (falg) {
            agentOrHidClick(falg)
        } else {
            agentOrHidback()
            sleep.second(2)
        }

        agentOrHidClick(ocrTextMoreByRes(allres, '退出', '残忍离开', '先不看', '坚持', '放弃', '强制'))
    }

    log('结束广告')
}